{
  "cells": [
    {
      "cell_type": "code",
      "execution_count": 13,
      "metadata": {},
      "outputs": [],
      "source": [
        "import os\n",
        "from dotenv import load_dotenv\n",
        "from IPython.display import Markdown, display, update_display\n",
        "from google import genai\n",
        "from google.genai import types\n",
        "from PIL import Image\n",
        "from io import BytesIO\n",
        "import base64\n",
        "from PyPDF2 import PdfReader"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 14,
      "metadata": {
        "id": "Jd_mMczWPcf-"
      },
      "outputs": [],
      "source": [
        "# prompt: get gemini api key and create a client connection to gemini\n",
        "\n",
        "# imports\n",
        "\n",
        "load_dotenv(override=True)\n",
        "google_api_key = os.getenv('GOOGLE_API_KEY')\n",
        "\n",
        "google = genai.Client(api_key=google_api_key)\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 15,
      "metadata": {
        "id": "STKn3tGIVxOA"
      },
      "outputs": [],
      "source": [
        "def modifyImage(image, prompt):\n",
        "    response = google.models.generate_content(\n",
        "        model=\"gemini-2.0-flash-preview-image-generation\",\n",
        "        contents=[prompt, image],\n",
        "        config=types.GenerateContentConfig(\n",
        "            response_modalities=['TEXT', 'IMAGE'],\n",
        "            temperature=0.1\n",
        "        )\n",
        "    )\n",
        "\n",
        "    for part in response.candidates[0].content.parts:\n",
        "      if part.text is not None:\n",
        "        print(part.text)\n",
        "      elif part.inline_data is not None:\n",
        "        image = Image.open(BytesIO(part.inline_data.data))\n",
        "        #image.show()\n",
        "    return image"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 16,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "06h-zRWtWL2J",
        "outputId": "e12b3b9a-4586-4cac-b3b9-1b5d6f27f708"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "I will transform the photograph into a vibrant Ghibli-style illustration. The scene will depict a man in a blue striped shirt and light blue shorts standing on a balcony with a glass railing. Behind him, the iconic Hollywood sign will be visible on a sun-drenched, grassy hillside under a clear blue sky, rendered with the characteristic soft lines and lush colors of Studio Ghibli animation.\n",
            "\n",
            "\n"
          ]
        }
      ],
      "source": [
        "styled_image = modifyImage(Image.open('my_picture.jpg'), 'convert the attached images to a Ghibli art work.')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 17,
      "metadata": {
        "id": "mR8MoSimZ14L"
      },
      "outputs": [],
      "source": [
        "def read_pdf(file_name):\n",
        "    file = open(file_name, \"rb\")\n",
        "    bin = file.read()\n",
        "    reader = PdfReader(BytesIO(bin))\n",
        "\n",
        "    text = \"\"\n",
        "    for page in reader.pages:\n",
        "        text += page.extract_text()\n",
        "    return text\n",
        "    \n",
        "def find_companies(text):\n",
        "  response = google.models.generate_content(\n",
        "    model=\"gemini-2.0-flash\",\n",
        "    config=types.GenerateContentConfig(\n",
        "        system_instruction=\"You are a career assistant.\"),\n",
        "    contents=('From the following text, please identity the company names I worked at or served as client. Please only return the company names, with each company name on a new line, no other text: \\n' + text)\n",
        "  )\n",
        "  return response.candidates[0].content.parts[0].text"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 18,
      "metadata": {
        "id": "uZopM8pObBIB"
      },
      "outputs": [],
      "source": [
        "pdf_text = read_pdf('my_profile.pdf')\n",
        "company_response = find_companies(pdf_text)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 19,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "kKoneJrjegUu",
        "outputId": "96f601f5-dec5-424f-b8ad-34c019091395"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "I will add the specified company logos as subtle elements in the background of the image, ensuring each logo appears only once and does not distract from the main subject.\n",
            "\n",
            "\n"
          ]
        }
      ],
      "source": [
        "final_image = modifyImage(styled_image, 'Please add the following company logos to the background, make sure only add each logo once:\\n' + company_response)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 20,
      "metadata": {},
      "outputs": [],
      "source": [
        "final_image.save('ai_profile_picture.png')"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "llms",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.11.12"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
